package com.j48.entrancegurad.mapper;

import com.j48.entrancegurad.model.Notice;
import org.apache.ibatis.annotations.*;
import org.springframework.stereotype.Repository;

import java.util.ArrayList;
import java.util.List;

/**
 * notice表操作
 */
@Repository
@Mapper
public interface NoticeMapper {
    /**
     * 查询所有公告
     * @return 公告列表
     */
    @Select("select * from `notice`")
    public ArrayList<Notice> selectAll();

    /**
     * 查询所有可见公告
     * @return 可见公告列表
     */
    @Select("select * from `notice` where notice_status=1")
    public ArrayList<Notice> selectAllAble();
    /**
     * 查询公告
     * @param notice 查询条件
     * @return 查询结果
     */
    @Select("select * from `notice` where notice_id=#{notice_id}")
    public Notice select(Notice notice);

    /**
     * 添加公告
     * @param notice 被添加的公告
     * @return 影响数据库数据条数
     */
    @Insert("insert into `notice`(notice_content,notice_admin_id,notice_createtime,notice_lasttime,notice_status) values (#{notice_content},#{notice_admin_id},#{notice_createtime},#{notice_lasttime},1)")
    public int insert(Notice notice);

    /**
     * 更新公告信息
     * @param notice 更新后的公告
     * @return 影响数据库数据条数
     */
    @Update("update `notice` set notice_content=#{notice_content},notice_lasttime=#{notice_lasttimme},notice_status=#{notice_status} where notice_id=#{notice_id}")
    public int update(Notice notice);

    /**
     * 隐藏公告
     * @param notice 被隐藏的公告
     * @return 影响数据库数据条数
     */
    @Update("update `notice` set notice_status=0 where notice_id=#{notice_id}")
    public int delete(Notice notice);
    /**
     * 隐藏公告重新发布
     * @param notice 重发布的公告
     * @return 影响数据库数据条数
     */
    @Update("update `notice` set notice_status=1 where notice_id=#{notice_id}")
    public int release(Notice notice);

    /**
     * 删除公告
     * @param notice
     * @return
     */
    @Delete("delete from `notice` where notice_id=#{notice_id}")
    public int deleteById(Notice notice);

    /**
     * 查询公告
     * @param notice 查询条件
     * @return 查询结果
     */
    @Select("select * from `notice` where notice_admin_id=#{notice_admin_id}")
    public ArrayList<Notice> selectByAdminId(Notice notice);
}
